import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
// Axios请求库
import axios from 'axios'
// Axios请求库
import VueAxios from 'vue-axios'

import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

// import './assets/css/index.css'
import './assets/css/iconfont.css'

Vue.config.productionTip = false

Vue.use(VueAxios, axios)
Vue.use(ElementUI)

//在每次路由切换前执行，检查用户是否已登录，未登录则重定向到登录页面。
router.beforeEach((to, from, next) => {
  if (to.path == '/login') {
    next()
  } else if (!store.state.userInfo) {
    next({ path: '/login' })
  } else {
    next()
  }
})

//在每次路由切换后执行，结束进度条。
router.afterEach(() => {
})

//在每个请求发送前添加授权头。
axios.interceptors.request.use((config) => {
  config.headers['Authorization'] = 'Bearer ' + sessionStorage.getItem('token')
  return config
})

//在每个响应接收后处理特定错误码（如 40001 和 50000），并根据情况显示消息或重定向。
axios.interceptors.response.use(
    (response) => {
      switch (response.data.code) {
        case 40001:
          Vue.prototype.$message({
            type: 'error',
            message: response.data.message
          })
          router.push({ path: '/login' })
          break
        case 50000:
          Vue.prototype.$message({
            type: 'error',
            message: response.data.message
          })
          break
      }
      return response
    },
    (error) => {
      return Promise.reject(error)
    }
)



new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')
